
		\centering
		\begin{center}
			\begin{tikzpicture}[-stealth,scale=1.5,transform shape,node distance = 1em]
				\tikzstyle{every node}=[font=\small,scale=0.8]
				\begin{scope}[minimum height = 1pt]
					\tikzstyle{inout}=[trapezium, trapezium left angle=60, trapezium right angle=120, draw] %%输入输出框
					\tikzstyle{point}=[coordinate,on grid,] % 像素点,用于连接转移线
					\tikzstyle{mid}=[rectangle,  opacity=0,draw] 
					\tikzstyle{end}=[rectangle, rounded corners, draw]   %%教材上的起止框
					\tikzstyle{endn}=[rounded rectangle, draw]   %%新版的起止框
					\tikzstyle{exec}=[rectangle, draw]    %%执行框 execute
					\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black]  % 平行四边形
					\tikzstyle{decide}=[diamond,aspect=2,draw,thin]   %%判断框 opacity=0.3
					
					% 节点 直线
					\node[end] (s) at (0,0) {开始};
					\node[anchor=south,inner sep=2pt] (m1) at ([yshift=-2em]s.south) {\color{blue}PUSH($\#$),PUSH(Z)};
					\node[anchor=south] (m2) at ([yshift=-2em]m1.south) {\color{blue}NEXT(W)};
					\node[anchor=south] (m3) at ([yshift=-2em]m2.south) {\color{blue}POP(x)};
					\node[decide] (d1) [below = of m3] {\color{blue}{$x$$\in$$V_T$}};
					\node[decide] (d2) [below = of d1] {\color{blue}{$x$$\in$$V_N$}};
					\node[decide] (d3) [below = of d2] {\color{blue}$w=$$\#$};
					\node[end] (e1) [below = of d3] {结束};
					% 左边
					\node[decide] (d4) at ([xshift=-3em]d1.west) {\color{blue}$x=w$};
					\node [font=\normalsize] (p1) at ([yshift=-2em]d4.south) {\color{blue}err};
					\node [font=\normalsize] (p2) at ([xshift=-2em]d3.west) {\color{blue}err};
					% 右边
					\node [exec] (s1) at ([xshift=4em,yshift=-1em]m2.east) {\color{blue}PUSH($i^R$)};
					\node [exec,align=center] (s2) at ([xshift=4em]d2.east) {\color{blue}查LL(1)分析表:  \\ \color{blue}$L(x,w)=?$};
					\node [decide] (d5) at ([yshift=-4em]s2.south) {\color{blue}空?};
					\node [font=\normalsize] (p3) at ([xshift=-1em,yshift=-1em]d5.west) {\color{blue}err};
					
					
					% 外部框
					\node(a1)[draw=red,rectangle callout,callout relative pointer={(-0.3,-0.4)},rounded corners,align=center] at ([xshift=1.5em,yshift=2em]s1.north) {\color{red}把产生式 i\hspace{2em} \\ \hspace{1em}\color{red}  右部逆序压栈};
					
					\node(a2)[draw=red,rectangle callout,callout relative pointer={(1.5,-1.4)},rounded corners,align=center] at ([xshift=-4.5em,yshift=4.8em]m3.west) {\color{red}把栈顶符\\ \color{red}弹入到变 \\ \color{red}量x中！};
					
					
					% 连线 直线
					\draw (s) -- (m1.north);
					\draw (m1.south) -- (m2.north);
					\draw (m2.south) -- (m3.north);
					\draw (m3.south) -- (d1.north);
					\draw (d1.south) -- node[right]{n}(d2.north);
					\draw (d2.south) -- node[right]{n}(d3.north);
					\draw (d3.south) -- node[right]{y}(e1);
					\draw (d1.west) -- node[above]{y}(d4.east);
					\draw (d2.east) -- node[above]{y}(s2.west); 
					\draw (s2.south) -- (d5.north);
					\draw (d4.south) -- node[right]{n}(p1.north);
					\draw (d3.west) -- node[above]{n}(p2.east);
					\draw (s1.west) -- ([xshift=-4em]s1.west);
					% 斜线 左边
					\draw (d4.north) -- node[right]{y}([yshift=4.6em]d4.north) -- ([xshift=-0.2em,yshift=-0.45em]m1.south);
					% 斜线 右边
					% \draw (d5.south) -- +(0,-1) —| node[right]{n}(s1.east);
					\draw (d5.west) -| node[above]{y}(p3.north);
					\draw [->] (d5.south) -- ([yshift=-1em]d5.south) -- ([xshift=3.5em,yshift=-1em]d5.south) -- node[right]{n}([xshift=2.28em]s1.east) -- (s1.east);
					
					
				\end{scope}
			\end{tikzpicture}
		\end{center}
